Python Flask ilovalarida xavfsiz sessiyalarni boshqarishni amalga oshirishni o'rganing, cookie-fayllar, server tomonidagi saqlash, xavfsizlik bo'yicha eng yaxshi amaliyotlar va keng tarqalgan zaifliklarni qamrab oladi.
Python Flask Sessiyalarni Boshqarish: Xavfsiz Amalga Oshirish bo'yicha To'liq Qo'llanma
Sessiyalarni boshqarish veb-ilovalarini ishlab chiqishning muhim jihati bo'lib, bir nechta so'rovlar bo'yicha foydalanuvchi holatini saqlash imkonini beradi. Python Flask-da sessiyalarni samarali boshqarish xavfsiz va foydalanuvchilar uchun qulay veb-ilovalarini yaratish uchun zarurdir. Ushbu to'liq qo'llanma sizga sessiyalarni boshqarish asoslari bilan tanishtiradi, turli xil amalga oshirish usullarini o'rganadi, xavfsizlik bo'yicha eng yaxshi amaliyotlarni ta'kidlaydi va keng tarqalgan zaifliklarni ko'rib chiqadi.
Sessiyalarni Boshqarish nima?
Sessiyalarni boshqarish foydalanuvchining veb-ilova bilan bir nechta so'rovlar orqali o'zaro aloqasi holatini saqlashni o'z ichiga oladi. Bu ilovaga foydalanuvchini va uning sozlamalarini, hatto ular sahifadan uzoqlashgandan yoki brauzerlarini yopgandan keyin ham eslab qolish imkonini beradi. Sessiyalarni boshqarishsiz, har bir so'rov butunlay yangi va aloqasi bo'lmagan o'zaro ta'sir sifatida ko'rib chiqiladi, bu esa foydalanuvchini autentifikatsiya qilish, savat yoki shaxsiylashtirilgan kontent kabi funksiyalarni amalga oshirishni imkonsiz qiladi.
Aslida, sessiya - bu foydalanuvchi va veb-ilova o'rtasidagi o'zaro ta'sir davri. Ushbu sessiya davomida ilova foydalanuvchi haqidagi ma'lumotlarni, masalan, ularning tizimga kirish holati, sozlamalari yoki savatidagi narsalarni saqlaydi. Ushbu ma'lumot serverda saqlanadi va odatda foydalanuvchi brauzeridagi cookie-faylda saqlanadigan noyob sessiya identifikatori bilan bog'lanadi.
Flask-ning O'rnatilgan Sessiyalarni Boshqarishi
Flask sessiya ma'lumotlarini mijoz tomonida saqlash uchun cookie-fayllarga tayanadigan o'rnatilgan sessiyalarni boshqarish mexanizmini taqdim etadi. Ushbu yondashuvni amalga oshirish oson va oz miqdordagi ma'lumotlar uchun mos keladi, ammo uning cheklovlari va xavfsizlik oqibatlarini tushunish juda muhimdir.
Flask Sessiyalari Qanday Ishlaydi
- Foydalanuvchi sizning Flask ilovangizga tashrif buyurganida, ilova so'rovda sessiya cookie-fayli allaqachon mavjudligini tekshiradi.
- Agar sessiya cookie-fayli mavjud bo'lsa, Flask cookie-faylda saqlangan ma'lumotlarni shifrlaydi va deserializatsiya qiladi.
- Agar sessiya cookie-fayli mavjud bo'lmasa, Flask yangi sessiya yaratadi va noyob sessiya ID-sini yaratadi.
- So'rov davomida siz Flask tomonidan taqdim etilgan lug'atga o'xshash ob'ekt bo'lgan
sessionob'ektidan foydalanib sessiya ma'lumotlariga kirishingiz va o'zgartirishingiz mumkin. - Javobni yuborishdan oldin, Flask sessiya ma'lumotlarini serializatsiya qiladi va shifrlaydi va shifrlangan ma'lumotlar va sessiya ID-si bilan javobda cookie-faylini o'rnatadi.
- Foydalanuvchi brauzeri cookie-faylini saqlaydi va ilovangizga keyingi so'rovlar bilan yuboradi.
Misol: Flask-ning O'rnatilgan Sessiyalaridan Foydalanish
Mana, Flask-ning o'rnatilgan sessiyalarni boshqarishidan qanday foydalanishga oid oddiy misol:
from flask import Flask, session, redirect, url_for, request
import os
app = Flask(__name__)
app.secret_key = os.urandom(24) # Tasodifiy maxfiy kalitni yarating
@app.route('/')
def index():
if 'username' in session:
return f'Logged in as {session["username"]}<br><a href = "/logout">Click here to logout</a>'
return 'You are not logged in <br><a href = "/login"><b>Click here to login</b></a>'
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
session['username'] = request.form['username']
return redirect(url_for('index'))
return '''
<form method = "post">
<p><input type = text name = username></p>
<p><input type = submit value = Login></p>
</form>
'''
@app.route('/logout')
def logout():
# Agar u erda bo'lsa, sessiyadan foydalanuvchi nomini olib tashlang
session.pop('username', None)
return redirect(url_for('index'))
if __name__ == '__main__':
app.run(debug=True)
Muhim: secret_key sessiya cookie-faylini shifrlash uchun juda muhimdir. Har doim kuchli, tasodifiy yaratilgan maxfiy kalitdan foydalaning. Maxfiy kalitni hech qachon kodingizga to'g'ridan-to'g'ri kiritmang; buning o'rniga uni muhit o'zgaruvchisida saqlang.
Cookie-fayllar Xavfsizligi
Cookie-fayllarga asoslangan sessiyalardan foydalanganda, ruxsatsiz kirish va manipulyatsiyaning oldini olish uchun cookie-faylini xavfsiz tarzda sozlash juda muhimdir. Mana, e'tiborga olish kerak bo'lgan ba'zi muhim cookie-fayllar atributlari:
HttpOnly: Ushbu atribut mijoz tomonidagi skriptlarning (masalan, JavaScript) cookie-faylga kirishiga to'sqinlik qiladi. Bu saytlararo skriptlar (XSS) hujumlari xavfini kamaytirishga yordam beradi. Flask standart bo'yichaHttpOnlyniTruega o'rnatadi.Secure: Ushbu atribut cookie-fayl faqat HTTPS ulanishlari orqali uzatilishini ta'minlaydi. Bu tinglash va odam o'rtasidagi hujumlarning oldini oladi. Flask konfiguratsiyasidaSESSION_COOKIE_SECURE = Trueni o'rnatib, buni ishlab chiqarish muhitlarida yoqing.SameSite: Ushbu atribut cookie-fayl saytlararo so'rovlar bilan qachon yuborilishini nazorat qiladi. UniStrictga o'rnatish saytlararo so'rovlar qalbakilashtirishiga (CSRF) qarshi eng yuqori darajadagi himoyani ta'minlaydi, ammo bu ba'zi qonuniy saytlararo funksiyalarni buzishi mumkin. UniLaxga o'rnatish ko'proq ishlatiladigan va odatda xavfsiz variant bo'lib, cookie-faylning yuqori darajadagi navigatsiya (masalan, havolani bosish) bilan yuborilishiga imkon beradi, ammo saytlararo shaklni taqdim etish bilan emas. BuniSESSION_COOKIE_SAMESITE = 'Lax'yokiSESSION_COOKIE_SAMESITE = 'Strict'yordamida o'rnating.Max-AgeyokiExpires: Ushbu atributlar cookie-faylning amal qilish muddatini belgilaydi. Sessiya davomiyligini cheklash uchun mos keladigan amal qilish muddatini o'rnating. Flaskning standart qiymatiPERMANENT_SESSION_LIFETIMEkonfiguratsiya o'zgaruvchisi tomonidan boshqariladi. Sessiya muddati har bir foydalanuvchi faoliyati bilan uzaytiriladigan siljish sessiyasi muddati tugashidan foydalanishni ko'rib chiqing.
Mana, Flask ilovangizda xavfsiz cookie-fayllarni qanday sozlash kerak:
app.config['SESSION_COOKIE_SECURE'] = True # Cookie-fayllarni faqat HTTPS orqali yuboring
app.config['SESSION_COOKIE_HTTPONLY'] = True # JavaScript kirishini oldini oling
app.config['SESSION_COOKIE_SAMESITE'] = 'Lax' # CSRFdan himoya qiling
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(minutes=30) # Sessiya 30 daqiqa harakatsizlikdan keyin tugaydi
Server Tomonidagi Sessiyalarni Boshqarish
Flask-ning o'rnatilgan cookie-fayllarga asoslangan sessiyalarni boshqarishi qulay bo'lsa-da, uning ba'zi cheklovlari bor:
- Cheklangan saqlash hajmi: Cookie-fayllar cheklangan o'lchamga ega (odatda 4 KB atrofida), bu sessiyada saqlashingiz mumkin bo'lgan ma'lumotlar miqdorini cheklaydi.
- Xavfsizlik xavfi: Cookie-fayllarda maxfiy ma'lumotlarni, hatto shifrlangan bo'lsa ham, saqlash xavfli bo'lishi mumkin, chunki cookie-fayllar ushlanishi yoki buzilishi mumkin.
- Ishlash xarajatlari: Har bir so'rov bilan butun sessiya ma'lumotlarini yuborish tarmoq trafigini oshirishi va ishlashga ta'sir qilishi mumkin.
Katta hajmdagi ma'lumotlarni saqlashni yoki maxfiy ma'lumotlarni qayta ishlashni talab qiladigan murakkabroq ilovalar uchun server tomonidagi sessiyalarni boshqarish xavfsizroq va kengaytiriladigan alternativadir. Server tomonidagi sessiyalar bilan sessiya ma'lumotlari serverda saqlanadi va mijoz faqat serverdan sessiya ma'lumotlarini olish uchun ishlatiladigan sessiya ID-sini oladi.
Server Tomonidagi Sessiyalarni Amalga Oshirish
Bir nechta Flask kengaytmalari server tomonidagi sessiyalarni boshqarish imkoniyatlarini taqdim etadi, jumladan:
- Flask-Session: Ushbu kengaytma sessiya ma'lumotlarini turli xil saqlash backendlarida, masalan, Redis, Memcached va SQLAlchemyda saqlashni qo'llab-quvvatlaydi.
- Flask-Caching: Asosan keshlash uchun mo'ljallangan bo'lsa-da, Flask-Caching sessiya ma'lumotlarini kesh backendida saqlash uchun ham ishlatilishi mumkin.
Mana, Redis bilan Flask-Session-dan foydalanishga oid misol:
from flask import Flask, session, redirect, url_for, request
from flask_session import Session
import os
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)
app.config['SESSION_TYPE'] = 'redis'
app.config['SESSION_REDIS'] = {'host': 'localhost', 'port': 6379, 'db': 0}
Session(app)
@app.route('/')
def index():
if 'username' in session:
return f'Logged in as {session["username"]}<br><a href = "/logout">Click here to logout</a>'
return 'You are not logged in <br><a href = "/login">Click here to login</a>'
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
session['username'] = request.form['username']
return redirect(url_for('index'))
return '''
<form method = "post">
<p><input type = text name = username></p>
<p><input type = submit value = Login></p>
</form>
'''
@app.route('/logout')
def logout():
session.pop('username', None)
return redirect(url_for('index'))
if __name__ == '__main__':
app.run(debug=True)
Ushbu misolda Flask-Session sessiya ma'lumotlarini localhostda 6379 portda ishlaydigan Redis ma'lumotlar bazasida saqlash uchun sozlangan. SESSION_TYPE konfiguratsiya opsiyasi foydalaniladigan saqlash backendini belgilaydi. Ushbu kodni ishga tushirishdan oldin Redis o'rnatilgan va ishlayotganiga ishonch hosil qiling.
Saqlash Backendini Tanlash
Server tomonidagi sessiyalar uchun saqlash backendini tanlash sizning ilovangiz talablariga bog'liq. Mana, e'tiborga olish kerak bo'lgan ba'zi omillar:
- Kengaytirilish: Agar sizning ilovangiz ko'p sonli bir vaqtning o'zida ishlaydigan foydalanuvchilarni boshqarishi kerak bo'lsa, Redis yoki Memcached kabi kengaytiriladigan saqlash backendini tanlang.
- Doimiylik: Agar siz serverni qayta ishga tushirishda sessiya ma'lumotlarini saqlab qolishingiz kerak bo'lsa, Redis yoki ma'lumotlar bazasi kabi doimiy saqlash backendini tanlang.
- Ishlash: Turli xil saqlash backendlarining ishlash xususiyatlarini ko'rib chiqing. Redis va Memcached odatda sessiyalarni saqlash uchun ma'lumotlar bazalariga qaraganda tezroqdir.
- Xarajat: Uskuna, dasturiy ta'minot va texnik xizmat ko'rsatish xarajatlari, shu jumladan turli xil saqlash backendlarining xarajatlarini baholang.
Mana, server tomonidagi sessiyalar uchun umumiy saqlash backendlarining qisqacha tavsifi:
- Redis: Sessiyalarni saqlash uchun juda mos keladigan tez, xotirada ma'lumotlarni saqlash joyi. Redis doimiylikni va replikatsiyani qo'llab-quvvatlaydi, bu uni ishlab chiqarish muhitlari uchun ishonchli tanlovga aylantiradi.
- Memcached: Ko'pincha sessiyalarni saqlash uchun ishlatiladigan yana bir tez, xotirada keshlash tizimi. Memcached Redisga qaraganda oddiyroq, ammo doimiylik yo'q.
- SQL Ma'lumotlar Bazalari (masalan, PostgreSQL, MySQL): Doimiy sessiya ma'lumotlarini talab qiladigan va mavjud ma'lumotlar bazasi infratuzilmasiga ega bo'lgan ilovalar uchun mos keladi.
- Fayl tizimi: Amalga oshirish oddiy bo'lsa-da, sessiyalarni to'g'ridan-to'g'ri fayl tizimida saqlash odatda kengayish va xavfsizlik muammolari tufayli ishlab chiqarish muhitlari uchun tavsiya etilmaydi.
Sessiyalarni Boshqarish bo'yicha Xavfsizlikning Eng Yaxshi Amaliyotlari
Cookie-fayllarga asoslangan yoki server tomonidagi sessiyalardan foydalanishingizdan qat'i nazar, ilovangizni sessiya bilan bog'liq zaifliklardan himoya qilish uchun xavfsizlik bo'yicha eng yaxshi amaliyotlarni amalga oshirish juda muhimdir.
Sessiyalarni O'g'irlash
Sessiyalarni o'g'irlash hujumchi haqiqiy sessiya ID-sini olganda va undan qonuniy foydalanuvchiga taqlid qilish uchun foydalanganda sodir bo'ladi. Bu turli yo'llar bilan sodir bo'lishi mumkin, masalan:
- Saytlararo skriptlar (XSS): Hujumchi veb-saytingizga sessiya cookie-faylini o'g'irlaydigan va uni o'z serveriga yuboradigan zararli JavaScript kodini kiritadi.
- Odam o'rtasidagi hujumlar: Hujumchi foydalanuvchi va serveringiz o'rtasidagi tarmoq trafigini ushlaydi va sessiya cookie-faylini o'g'irlaydi.
- Sessiyalarni mahkamlash: Hujumchi foydalanuvchini hujumchi allaqachon biladigan ma'lum bir sessiya ID-sidan foydalanishga aldadi.
Sessiyalarni O'g'irlashni Kamaytirish
- HTTPS-dan foydalaning: Foydalanuvchi va serveringiz o'rtasidagi barcha aloqalarni shifrlash uchun har doim HTTPS-dan foydalaning. Bu hujumchilarning tranzitda sessiya cookie-fayllarini ushlab qolishiga to'sqinlik qiladi.
- Xavfsiz cookie-fayllar atributlarini o'rnating: Oldinroq muhokama qilinganidek, sessiya cookie-fayllarida
HttpOnly,SecurevaSameSiteatributlarini o'rnating, ularni mijoz tomonidagi skriptlar va saytlararo so'rovlardan himoya qiling. - Sessiya ID-larini yangilang: Tizimga kirish, tizimdan chiqish va parolni o'zgartirish kabi muhim voqealardan so'ng sessiya ID-sini yangilang. Bu sessiyalarni mahkamlash hujumlarining oldini olishga yordam beradi. Buni Flask-Session-da
session.regenerate()yordamida qilishingiz mumkin. - Foydalanuvchi faoliyatini kuzatishni amalga oshiring: Foydalanuvchi faoliyatini shubhali xatti-harakatlar uchun kuzatib boring, masalan, turli IP manzillaridan bir nechta tizimga kirish yoki g'ayrioddiy kirish naqshlari.
- Kuchli autentifikatsiya mexanizmlaridan foydalaning: Hujumchilarning foydalanuvchi hisoblariga kirishini qiyinlashtirish uchun ko'p faktorli autentifikatsiya (MFA) kabi kuchli autentifikatsiya usullaridan foydalaning.
Saytlararo So'rovlarni Qalbakilashtirish (CSRF)
CSRF - bu autentifikatsiyalangan foydalanuvchini veb-ilovada kutilmagan harakatlarni bajarishga majbur qiladigan hujum. Masalan, hujumchi foydalanuvchini ularning hisobidan hujumchining hisobiga pul o'tkazadigan shaklni topshirishga aldashi mumkin.
CSRFni Kamaytirish
- CSRF himoyasidan foydalaning: Flask
Flask-WTFkengaytmasi yordamida yoqishingiz mumkin bo'lgan o'rnatilgan CSRF himoya mexanizmini taqdim etadi. Ushbu kengaytma har bir shakl uchun noyob CSRF tokenini yaratadi va shaklni qayta ishlashdan oldin so'rovda token mavjudligini tasdiqlaydi. SameSitecookie-fayl atributidan foydalaning: Yuqorida aytib o'tilganidek,SameSitecookie-fayl atributiniLaxyokiStrictga o'rnatish CSRF hujumlaridan sezilarli himoya qilishni ta'minlaydi.- Qo'shaloq taqdim etish cookie-fayllarini amalga oshiring: Ushbu texnika ham cookie-faylda, ham shakl maydonida tasodifiy qiymatni o'rnatishni o'z ichiga oladi. Keyin server so'rovni qayta ishlashdan oldin qiymatlar mos kelishini tasdiqlaydi.
Sessiyalarni Mahkamlash
Sessiyalarni mahkamlash - bu hujumchining foydalanuvchini hujumchi allaqachon biladigan sessiya ID-sidan foydalanishga aldagan hujumi. Bu hujumchiga foydalanuvchi tizimga kirgandan so'ng foydalanuvchi sessiyasini o'g'irlash imkonini beradi.
Sessiyalarni Mahkamlashni Kamaytirish
- Sessiya ID-larini yangilang: Sessiyalarni mahkamlashning oldini olishning eng samarali usuli - bu foydalanuvchi tizimga kirgandan so'ng sessiya ID-sini yangilash. Bu foydalanuvchining yangi, oldindan aytib bo'lmaydigan sessiya ID-sidan foydalanishini ta'minlaydi.
Ma'lumotlarni Himoya qilish
Sessiyalarda saqlangan maxfiy ma'lumotlarni himoya qilish muhim ahamiyatga ega. Shifrlash bilan ham, agar ma'lumotlarning o'zi xavfsiz tarzda ishlov berilmasa, zaifliklar mavjud bo'lishi mumkin.
Ma'lumotlarni Himoya Qilish bo'yicha Eng Yaxshi Amaliyotlar
- Maxfiy ma'lumotlarni shifrlang: Agar sessiyada kredit karta raqamlari yoki shaxsiy ma'lumotlar kabi maxfiy ma'lumotlarni saqlashingiz kerak bo'lsa, uni saqlashdan oldin ma'lumotlarni shifrlang. Kuchli shifrlash algoritmi va xavfsiz kalitlarni boshqarish tizimidan foydalaning. Biroq, imkon qadar sessiyalarda yuqori darajadagi maxfiy ma'lumotlarni saqlashdan saqlaning.
- Foydalanuvchi kiritishini tozalang va tekshiring: Sessiyada saqlashdan oldin har doim foydalanuvchi kiritishini tozalang va tekshiring. Bu XSS hujumlari va boshqa xavfsizlik zaifliklarining oldini olishga yordam beradi.
- Sessiya muddatini cheklang: Sessiyalarni o'g'irlash xavfini minimallashtirish uchun sessiyalar uchun mos keladigan amal qilish muddatini o'rnating.
- Kodingizni muntazam ravishda tekshiring: Kodingizni xavfsizlik zaifliklari uchun muntazam ravishda ko'rib chiqing va xavfsiz kodlash amaliyotlariga rioya qiling.
Keng Tarqalgan Zaifliklar va Ularning Oldini Qanday Olish
Mana, sessiyalarni boshqarishning ba'zi keng tarqalgan zaifliklari va ularning oldini olish usullari:
- Xavfsiz bo'lmagan cookie-fayl konfiguratsiyasi: Sessiya cookie-fayllarida
HttpOnly,SecurevaSameSiteatributlarini o'rnatmaslik ilovangizni XSS va CSRF hujumlariga qarshi himoyasiz qoldirishi mumkin. - Zaif sessiya ID-lari: Oldindan aytib bo'ladigan yoki oson taxmin qilinadigan sessiya ID-laridan foydalanish hujumchilarga sessiyalarni o'g'irlashga imkon berishi mumkin. Sessiya ID-larini yaratish uchun kriptografik jihatdan xavfsiz tasodifiy sonlar generatoridan foydalaning.
- Maxfiy ma'lumotlarni cookie-fayllarda saqlash: Maxfiy ma'lumotlarni cookie-fayllarda, hatto shifrlangan bo'lsa ham, saqlash xavfli bo'lishi mumkin. Maxfiy ma'lumotlarni saqlash uchun server tomonidagi sessiyalardan foydalaning.
- CSRF himoyasining yo'qligi: CSRF himoyasini amalga oshirmaslik hujumchilarga autentifikatsiyalangan foydalanuvchilar nomidan kutilmagan harakatlarni bajarishga imkon berishi mumkin.
- Sessiyalarni mahkamlash: Tizimga kirgandan so'ng sessiya ID-larini yangilamaslik ilovangizni sessiyalarni mahkamlash hujumlariga qarshi himoyasiz qoldirishi mumkin.
- Tasdiqlanmagan foydalanuvchi kiritishi: Sessiyada tasdiqlanmagan foydalanuvchi kiritishini saqlash XSS hujumlariga olib kelishi mumkin.
Turli Ssenariylarda Sessiyalarni Boshqarish
Sessiyalarni boshqarishga eng yaxshi yondashuv sizning ilovangizning o'ziga xos talablariga bog'liq. Mana, ba'zi ssenariylar va tavsiyalar:
- Minimal ma'lumotlarga ega oddiy ilovalar: Flask-ning o'rnatilgan cookie-fayllarga asoslangan sessiyalarni boshqarishi kifoya qilishi mumkin. Xavfsiz cookie-fayllar atributlarini sozlash va kuchli maxfiy kalitdan foydalanishga ishonch hosil qiling.
- Maxfiy ma'lumotlarga ega ilovalar: Redis yoki ma'lumotlar bazasi kabi xavfsiz saqlash backendiga ega server tomonidagi sessiyalarni boshqarishdan foydalaning. Sessiyada saqlashdan oldin maxfiy ma'lumotlarni shifrlang.
- Kengaytiriladigan ilovalar: Redis yoki Memcached kabi kengaytiriladigan saqlash backendiga ega server tomonidagi sessiyalarni boshqarishdan foydalaning. Yuqori mavjudlik uchun tarqatilgan sessiyalarni boshqarish tizimidan foydalanishni ko'rib chiqing.
- Uchinchi tomon integratsiyasi bo'lgan ilovalar: Sessiya ma'lumotlariga tayanadigan uchinchi tomon xizmatlari bilan integratsiya qilishda ehtiyot bo'ling. Uchinchi tomon xizmati xavfsizligiga va sessiya ma'lumotlaringizni ruxsatsiz tomonlarga oshkor qilmasligiga ishonch hosil qiling. Tegishli avtorizatsiya va autentifikatsiya mexanizmlarini amalga oshiring.
Xalqarolashtirish Masalalari: Global auditoriya uchun sessiyalarni boshqarishni loyihalashda quyidagilarni ko'rib chiqing:
- Vaqt zonalari: Foydalanuvchilarning vaqt zonalariga oid sozlamalarini sessiyada saqlang va ulardan sanalar va vaqtlarni mos ravishda ko'rsatish uchun foydalaning.
- Mahalliylashtirish: Foydalanuvchilarning til va mahallaga oid sozlamalarini sessiyada saqlang va ulardan kontent va xabarlarni foydalanuvchining afzal tilida ko'rsatish uchun foydalaning.
- Valyuta: Foydalanuvchilarning valyutaga oid sozlamalarini sessiyada saqlang va ulardan narxlar va moliyaviy ma'lumotlarni foydalanuvchining afzal valyutasida ko'rsatish uchun foydalaning.